/// CreateTime 2020/7/6 10:25
/// CreateUser chen 
/// ProjectName flutter_elf
import 'package:flutter_elf/config/component_index.dart';
import 'dart:core';
import 'package:crypto/crypto.dart';
import 'package:flutter_test/flutter_test.dart';

///  text -> emoj
//void main(){
////  String emoj = '🤐🤐🤐🤐';
////  String text = '好好好好';
//  String pattern = r'\[U\+\S{3,6}\]';
//  String str = '呵呵哒[/U+1F60B]hello world[/U+1F60A]中间[/U+1F60C]';
//
////  print(str.replaceAll(RegExp(pattern), '---'));
//  var result = str.replaceAllMapped(RegExp(pattern), (s){
//    print(s.group(0).substring(4,9));
//    print(s.group(0).length);
//    if(s.group(0).length == 10){
//      return String.fromCharCode(int.parse('0x' + s.group(0).substring(4,9)));
//    }
//    return '';
////    return '````';
//  });
//  print(result);
//
////  print(emoj.substring(0,2));
//
////  print(emoj.codeUnitAt(1).bitLength);
////  print(text.codeUnitAt(1).bitLength);
////
////
////  print(emoj.codeUnits);
////  print(text.codeUnits);
////
////  print(emoj.runes.toList());
////  print(text.runes.toList());
////
////  print(emoj.length);
////  print(text.length);
////
////    print(String.fromCharCode(100000) + '===============>${129296}');
////
////  for(int i=120000;i<130000;i++){
////    print(String.fromCharCode(i) + '===============>$i');
////  }
//
//}

///emoj ==> text
//void main(){
//  String emoj = '呵🤐好';
//  String text = '好好好好';
//
////  print(emoj.runes);
//  List<String> s = emoj.runes.map<String>((e){
////    print(e);
//    print(String.fromCharCode(e));
//    return String.fromCharCode(e);
//  }).toList();
//  s.join('');
//  print("===========>" + s.toString());
//}

///测试
void main(){
  String str = '呵[U+1f911]好';
  String emoj = '呵🤐好';
  print(str2EmoJ(str));
  print(emoJ2Str(emoj));
}

///字符串中的表情 转成   [/U+1F60B]    呵[/U+1F60B]好  ===> 呵🤐好
String pattern = r'\[\U\+\S{3,6}\]';
String str2EmoJ(String str){
  if(isEmptyString(str))return '';
  var result = str.replaceAllMapped(RegExp(pattern), (s){
  print(s.group(0).substring(3,8));
  print(s.group(0).length);
  if(s.group(0).length == 9){
    return String.fromCharCode(int.parse('0x' + s.group(0).substring(3,8)));
  }
    return '---';
  });
  return result;
}

///   呵🤐好  ====>  呵[/U+1F60B]好
String emoJ2Str(String emoj){
  if(isEmptyString(emoj))return '';
  List<String> s = emoj.runes.map<String>((e){
    if(e > 120000 && e < 130000){
      return '[U+${int.parse(e.toString()).toRadixString(16)}]'.toUpperCase();
    }else{
      return String.fromCharCode(e);
    }
  }).toList();
  return s.join('');
}

bool isEmptyString(String str) {
return str == null || str.isEmpty;
}